package libs

import (
	"github.com/gin-gonic/gin"
	"io"
	"mime/multipart"
	"strconv"
	"time"
)

type File struct {
	Filename string // 文件名称
	Size     int64  // 文件大小 单位 B
}

func ManyUploadDates(ctx *gin.Context) {
	form, _ := ctx.MultipartForm()
	files, _ := form.File["user-headimage"]
	for _, file := range files {
		_ = ctx.SaveUploadedFile(
			file,
			"./OSS/"+strconv.FormatInt(time.Now().UnixMilli(), 10)+file.Filename,
		)
	}
	ctx.String(200, "成功!")
}

func UploadDates(ctx *gin.Context) {
	file, err := ctx.FormFile("user-headimage")
	if err != nil {
		ctx.String(200, "糟糕错误了！")
		return
	}
	fileObj := File{
		file.Filename,
		file.Size,
	}

	ctx.JSON(200, gin.H{
		"大小": strconv.FormatInt(fileObj.Size/1024, 10) + " KB",
		"名称": fileObj.Filename,
	})

	go func() {
		fileErr := ctx.SaveUploadedFile(
			file,
			"./OSS/"+strconv.FormatInt(time.Now().Unix(), 10)+file.Filename,
		)
		if fileErr != nil {
			ctx.String(201, "文件上传错误!")
		}
	}()
}

func UploadDatesCuts(ctx *gin.Context) {
	file, _ := ctx.FormFile("user-headimage") // 获取文件
	readerHandler, _ := file.Open()           // 打开文件
	data, _ := io.ReadAll(readerHandler)      //  读取文件
	ctx.String(200, string(data))             // 发送文件信息
	defer func(readerHandler multipart.File) {
		err := readerHandler.Close()
		if err != nil {
			return // (^ o^) ❤ (^o ^)
		}
	}(readerHandler)
}
